Client proximity detection method and system

ABSTRACT

A system and method in a wireless network for discovering which resources (e.g., other wireless computing devices) are proximate a user&#39;s wireless computing device. Wireless signal strengths with respect to various base stations are compared with the signal strengths of other network devices or resources, to determine which devices are experiencing similar signal strengths. Devices with similar signal strengths are deemed proximate. Each participating computing device may send its signal strength reports to a proximity server, which distributes proximity data to network clients. Each client may receive and process the signal strength data for determining which other clients/resources are proximate, or the server can perform proximity computations and return a list of proximate clients. Once computed, the identities of the proximate clients can be used to query for additional data about the clients, such as the names and other details of their owners, or information about the resource.

CROSS-REFERENCE TO RELATED APPLICATION

The present invention claims priority to U.S. provisional patentapplication Ser. No. 60/471,982, filed May 19, 2003 and hereinincorporated by reference.

FIELD OF THE INVENTION

The invention relates generally to computer systems and networks, andmore particularly to computer systems employing wireless communications.

BACKGROUND OF THE INVENTION

When in unfamiliar settings, it would be very useful for a person to beable to automatically discover who else was nearby, and also what otherresources were near that person. For example, at conferences, meetingsand other social engagements, people interact with one another fairlyregularly, and often see the same people at many such events. One of themost awkward and difficult things that occurs for an individual is tosee someone that he or she should know fairly well from a previousencounter, yet be unable to remember the name and other details of thatperson. Some people may go so far as to attempt to avoid such a personuntil they can recall at least the name, or otherwise find out who thatperson is.

In addition to discovering other people, many individuals would benefitfrom being able to discover other resources that are nearby. Forexample, a user of a mobile computing device may need to print adocument, such as when out of the office, and would thus benefit frombeing able to detect the nearest available printer. As another example,a user may misplace a mobile computing device, such as by leaving apocket-sized digital assistant in someone else's office or under a pileof papers, and would benefit from being able to discover the location ofthe misplaced device. As other examples, a person may want to find thenearest elevator, bathroom, or vending machine, even though thesedevices are not part of any computer network.

What is needed is a way for a user of a computing device to be able todetect or otherwise discover people and other resources that are nearbythe user's computing device. The method and system should be reliable,flexible, and extensible, as well as easy to use and understand for evennon-sophisticated computer users.

SUMMARY OF THE INVENTION

Briefly, the present invention provides a system and method in awireless network for discovering via a network-capable device (such as acomputing device) which other wireless network devices and othertransmitters of network information are proximate the network device.With this information, information about another resource (e.g.,biographical data about a computing device's owner, or its devicecapabilities and/or location) may be looked up or otherwise provided toa network device for presentation to a user of that device.

To discover which other resources such as wireless network devices areproximate, the system and method gather wireless signal strengths (withrespect to various base stations, or access points or the like) fromparticipating resources such as network devices, and then compare thosesignal strengths to determine which devices are experiencing similarsignal strengths. Those with similar signal strengths are determined tobe in proximity to one another.

In one implementation, each participating computing device (proximityclient) is responsible for sending signal strength reports for thevarious base stations that it can see to a proximity server. A clientcan also optionally register with the server, supplying data such as aname string and an expiration time. In an alternative implementation,clients can provide signal strengths to one another in a peer-to-peerdata exchange model. In a client-server model, the server can distribute(e.g., when queried or periodically) the signal strength information tothe clients, or the server can perform computations to determine whichparticipating clients are proximate any given client, as determinedbased on similar signal strength reports. A list of such other clientsmay be provided to each client, possibly including other information.For example, if the client does not compute proximity on its own, thenthe list can include information about the other clients such asbiographical data of its associated user, or the client can otherwiseobtain the information, such as by querying a database.

If the client does its own proximity computations, then the clientqueries the server (or other clients) for signal strength reports, orreceives them in some other manner such as periodically, usually goingback in time some limited amount. Once computed, the client list can beused as a basis for querying a database as needed to obtain additionaldata about the other clients, such as the names and other details oftheir owners, or information about the resource (e.g., a printer and itsintended location, such as at an information booth).

A client can be set up to report its signal strengths and present listsof nearby clients on demand. The on-demand (manual) mode is useful forobtaining a one-time list of nearby users, for example at the beginningof a meeting. Alternatively, the client can be set up to perform thereporting function periodically (or on some occasional basis). Such aperiodic mode is useful if users are frequently moving from place toplace, when their signal strengths and proximity relations will alsochange frequently. The reporting can be some combination of thesemechanisms, e.g., switch from an on-demand reporting mode to a periodicreporting mode when a client's own average signal strengths with respectto base stations start varying beyond some threshold, which would beindicative of the client moving.

In a client-server model, the proximity server collects signal strengthdata from each mobile client and distributes the signal strengths and/orproximity data (such as a list of clients) back to those mobile clients.The proximity server is a central computer that stores signal strengthdata reports contributed by the participating mobile proximity clients.In one implementation, each report comprises a set of ordered pairs,with each ordered pair giving a base station identifier and the signalstrength from that base station as measured on the client. The proximityserver tracks the data in association with the identity of the reportingmobile device, and adds a time stamp that indicates when the report wasreceived.

Proximity clients may query data from the proximity server. For example,if a client performs its own proximity computations, then that clientwill request signal strength reports from the server, usually going backin time by an amount specified by the client. This “look back” time actsas a filter on the data so only recent signal strength data may beconsidered, as older data may have come from locations that the clientsare no longer near. Other smoothing and filtering operations arefeasible. Other clients, such as those that do not perform their ownproximity computations, may request that the server send back a list ofother nearby clients.

The proximity information, whether calculated from obtained signalstrength data or obtained from the server, can be used to access one ormore databases (e.g., a database of biographical data built duringconference registration such as including a picture, name and facts),whereby information about a nearby individual or device is readilyavailable to a participating client computer.

Proximity to non-networked or non-electronic resources such as stairwaysor bathrooms can be computed by representing each such device as a setof signal strengths in the database. These signal strengths are measuredin a calibration step in which a user visits the resource's actuallocation while carrying a wireless device. The resource's signalstrengths are measured with the wireless devices and reported to thedatabase. In this way, any resource can be tagged with signal strengthsand then participate in proximity queries.

Other advantages will become apparent from the following detaileddescription when taken in conjunction with the drawings, in which:

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram generally representing a computer system intowhich the present invention may be incorporated;

FIG. 2 is a block diagram generally representing a network, including aplurality of base stations having wireless connections to a plurality ofnetwork devices, configured to use signal strength data in accordancewith an aspect of the present invention;

FIG. 3 is a block diagram generally representing another network,including a plurality of base stations having wireless connections to aplurality of network devices, configured to use signal strength data inaccordance with an

FIG. 4 is a block diagram generally representing a network includingfixed and wireless devices, configured to use signal strength data inaccordance with an aspect of the present invention;

FIG. 5 is a representation of a program display showing one example ofhow signal strength data may be used to present a computer user withinformation based on proximity data of other network devices, inaccordance with an aspect of the present invention; and

FIG. 6 is flow diagram generally representing operation of a clientprogram to use signal strength data to present a computer user withinformation based on proximity data of other network devices, inaccordance with an aspect of the present invention.

DETAILED DESCRIPTION Exemplary Operating Environment

FIG. 1 illustrates an example of a suitable computing system environment100 on which the invention may be implemented. The computing systemenvironment 100 is only one example of a suitable computing environmentand is not intended to suggest any limitation as to the scope of use orfunctionality of the invention. Neither should the computing environment100 be interpreted as having any dependency or requirement relating toany one or combination of components illustrated in the exemplaryoperating environment 100.

The invention is operational with numerous other general purpose orspecial purpose computing system environments or configurations.Examples of well known computing systems, environments, and/orconfigurations that may be suitable for use with the invention include,but are not limited to, personal computers, server computers, hand-heldor laptop devices, tablet devices, multiprocessor systems,microprocessor-based systems, set top boxes, programmable consumerelectronics, network PCs, minicomputers, mainframe computers,distributed computing environments that include any of the above systemsor devices, and the like.

The invention may be described in the general context ofcomputer-executable instructions, such as program modules, beingexecuted by a computer. Generally, program modules include routines,programs, objects, components, data structures, and so forth, thatperform particular tasks or implement particular abstract data types.The invention may also be practiced in distributed computingenvironments where tasks are performed by remote processing devices thatare linked through a communications network. In a distributed local andremote computer storage media including memory storage devices.

With reference to FIG. 1, an exemplary system for implementing theinvention includes a general purpose computing device in the form of acomputer 110. Components of the computer 110 may include, but are notlimited to, a processing unit 120, a system memory 130, and a system bus121 that couples various system components including the system memoryto the processing unit 120. The system bus 121 may be any of severaltypes of bus structures including a memory bus or memory controller, aperipheral bus, and a local bus using any of a variety of busarchitectures. By way of example, and not limitation, such architecturesinclude Industry Standard Architecture (ISA) bus, Micro ChannelArchitecture (MCA) bus, Enhanced ISA (EISA) bus, Video ElectronicsStandards Association (VESA) local bus, and Peripheral ComponentInterconnect (PCI) bus also known as Mezzanine bus.

The computer 110 typically includes a variety of computer-readablemedia. Computer-readable media can be any available media that can beaccessed by the computer 110 and includes both volatile and nonvolatilemedia, and removable and non-removable media. By way of example, and notlimitation, computer-readable media may comprise computer storage mediaand communication media. Computer storage media includes both volatileand nonvolatile, removable and non-removable media implemented in anymethod or technology for storage of information such ascomputer-readable instructions, data structures, program modules orother data. Computer storage media includes, but is not limited to, RAM,ROM, EEPROM, flash memory or other memory technology, CD-ROM, digitalversatile disks (DVD) or other optical disk storage, magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices,or any other medium which can be used to store the desired informationand which can accessed by the computer 110. Communication mediatypically embodies computer-readable instructions, data structures,program modules or other data in a modulated data signal such as acarrier wave or other transport mechanism and includes any informationdelivery media. The term “modulated data signal” means a signal that hasone or more of its characteristics set or changed in such a manner as toencode information in the signal. By way of example, and not limitation,communication media includes wired media such as a wired network ordirect-wired connection, and wireless media such as acoustic, RF,infrared and other wireless media. Combinations of the any of the aboveshould also be included within the scope of computer-readable media.

The system memory 130 includes computer storage media in the form ofvolatile and/or nonvolatile memory such as read only memory (ROM) 131and random access memory (RAM) 132. A basic input/output system 133(BIOS), containing the basic routines that help to transfer informationbetween elements within computer 110, such as during start-up, istypically stored in ROM 131. RAM 132 typically contains data and/orprogram modules that are immediately accessible to and/or presentlybeing operated on by processing unit 120. By way of example, and notlimitation, FIG. 1 illustrates operating system 134, applicationprograms 135, other program modules 136 and program data 137.

The computer 110 may also include other removable/non-removable,volatile/nonvolatile computer storage media. By way of example only,FIG. 1 illustrates a hard disk drive 141 that reads from or writes tonon-removable, nonvolatile magnetic media, a magnetic disk drive 151that reads from or writes to a removable, nonvolatile magnetic disk 152,and an optical disk drive 155 that reads from or writes to a removable,nonvolatile optical disk 156 such as a CD ROM or other optical media.Other removable/non-removable, volatile/nonvolatile computer storagemedia that can be used in the exemplary operating environment include,but are not limited to, magnetic tape cassettes, flash memory cards,digital versatile disks, digital video tape, solid state RAM, solidstate ROM, and the like. The hard disk drive 141 is typically connectedto the system bus 121 through a non-removable memory interface such asinterface 140, and magnetic disk drive 151 and optical disk drive 155are typically connected to the system bus 121 by a removable memoryinterface, such as interface 150.

The drives and their associated computer storage media, discussed aboveand illustrated in FIG. 1, provide storage of computer-readableinstructions, data structures, program modules and other data for thecomputer 110. In FIG. 1, for example, hard disk drive 141 is illustratedas storing operating system 144, application programs 145, other programmodules 146 and program data 147. Note that these components can eitherbe the same as or different from operating system 134, applicationprograms 135, other program modules 136, and program data 137. Operatingsystem 144, application programs 145, other program modules 146, andprogram data 147 are given different numbers herein to illustrate that,at a minimum, they are different copies. A user may enter commands andinformation into the computer 110 through input devices such as a tablet(electronic digitizer) 164, a microphone 163, a keyboard 162 andpointing device 161, commonly referred to as mouse, trackball or touchpad. Other input devices (not shown) may include a joystick, game pad,satellite dish, scanner, or the like. These and other input devices areoften connected to the processing unit 120 through a user inputinterface 160 that is coupled to the system bus, but may be connected byother interface and bus structures, such as a parallel port, game portor a universal serial bus (USB). A monitor 191 or other type of displaydevice is also connected to the system bus 121 via an interface, such asa video interface 190. The monitor 191 may also be integrated with atouch-screen panel 193 or the like that can input digitized input suchas handwriting into the computer system 110 via an interface, such as atouch-screen interface 192. Note that the monitor and/or touch screenpanel can be physically coupled to a housing in which the computingdevice 110 is incorporated, such as in a tablet-type personal computer,wherein the touch screen panel 193 essentially serves as the tablet 164.In addition, computers such as the computing device 110 may also includeother peripheral output devices such as speakers 195 and printer 196,which may be connected through an output peripheral interface 194 or thelike.

The computer 110 may operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computer180. The remote computer 180 may be a personal computer, a server, arouter, a network PC, a peer device or other common network node, andtypically includes many or all of the elements described above relativeto the computer 110, although only a memory storage device 181 has beenillustrated in FIG. 1. The logical connections depicted in FIG. 1include a local area network (LAN) 171 and a wide area network (WAN)173, but may also include other networks. Such networking environmentsare commonplace in offices, enterprise-wide computer networks, intranetsand the Internet.

When used in a LAN networking environment, the computer 110 is connectedto the LAN 171 through a network interface or adapter 170, andparticularly may include one configured for wireless networking. Whenused in a WAN networking environment, the computer 110 may also includea modem 172 or other means for establishing communications over the WAN173, such as the Internet. The modem 172, which may be internal orexternal, may be connected to the system bus 121 via the user inputinterface 160 or other appropriate mechanism. In a networkedenvironment, program modules depicted relative to the computer 110, orportions thereof, may be stored in the remote memory storage device. Byway of example, and not limitation, FIG. 1 illustrates remoteapplication programs 185 as residing on memory device 181. It will beappreciated that the network connections shown are exemplary and othermeans of establishing a communications link between the computers may beused.

Client Proximity Detection

The present invention, in part, directed towards a method and systemthat use radio signal strengths from a wireless computer network toestimate which other mobile, wireless devices (and possibly theirowners) are in physical proximity. While the examples herein generallyrefer to mobile network devices in the form of portable computer systemssuch as tablet personal computers, it should be understood thatvirtually any device capable of transmitting information to a wirelessnetwork can participate in the proximity detection schemes describedherein. Moreover, sources other than radio waves can be used to detectproximity of devices having suitable sensors, such as sound waves andlight patterns. In general, anything that can be sensed by somemechanism that has characteristics local to some area may be used tocompute (or help compute) proximity. Thus, although radio is primarilydescribed herein, proximity detection based on the principles of thepresent invention may apply to many other concepts, and thus the term“network” need not be an actual computer network, the terms “signal” and“signal strength” are intended to encompass any sensed information thatvaries based on location, and “base station” or “base stations”represent any signal source or sources from which data can be sensed.

Moreover, participation need not be symmetrical, in that, for example, adevice can transmit its signal strength data for proximity detectionpurposes without receiving similar data from other devices, in essencedescribing its location but not concerning itself with the location ofother devices. Thus, for example, an individual can wear a smalltransmitting device that essentially announces the individual's locationbut does not process data related to detecting other devices inproximity. Conversely, a device can receive proximity-related data ofother network devices without transmitting its signal strength data,however participation is generally desirable, as will be readilyapparent. Also, for non-networked or non-electronic resources, theresource may be represented by a set of signal strengths that weremeasured only once in a calibration step. Note that as used herein,although much of the description exemplifies the use of wirelesscomputing devices, the term “resource” includes the concept of such awireless device and/or any other type of computing device, as well assome non-networked or even non-electronic devices. In general, aresource thus can be anything that has associated signal strength data,such as actual, current signal strength data of a mobile computingdevice, or pre-measured data stored for a fixed resource or the like.

As generally represented in FIG. 2, a wireless network 200 is normallycomposed of multiple, statically mounted, wireless base stations (fiveare shown in FIG. 2, labeled 202 ₁-202 ₅, although it is understood thatany practical number may be present) that simultaneously communicateover radio frequencies to wireless devices (four are shown, 204 _(A)-204_(D), which can again be any practical number) and over network cableswith a wired network. When in range, each mobile device can “see”(receive signals from) one or more of these base stations, and measurethe strength of the radio signal it is receiving from these basestations. This measurement is often referred to as “RSSI,” for “ReceivedSignal Strength Indicator.” Note that the measured RSSI of a basestation varies from place to place due to the natural attenuation ofradio signals with distance as well as the reflection, refraction,diffraction, and attenuation caused by the physical environment, likewalls, floors, ceilings, and furniture. Thus, the RSSI that a mobiledevice measures is sensitive to that device's location.

In one implementation, the present invention detects the proximity oftwo or more devices connected to a wireless network by examining thesignal strengths that 802.11 clients measure from statically mounted802.11 access points, (wherein 802.11 specifies well-known wirelesscommunications standards based on IEEE 802.11 specifications). Ingeneral, when the signal strengths are similar enough, the clients aredeclared to be in proximity. Note that 802.11 coverage and the number of802.11-enabled devices are becoming prevalent, and in such anenvironment the present invention enables 802.11 clients to see whichother 802.11 clients are nearby, using the existing infrastructure. Aswill be understood, this detection enables a wide variety ofapplications, including automatically showing a list of nearby friends,displaying information about unknown people standing nearby in a socialsetting, advertising the proximity of nearby 802.11-connected devices,such as wireless printers, finding nearby resources, and so forth.Notwithstanding, the present invention is not limited to any particularapplications, communications standards, frequencies, protocols or thelike.

In general, an implementation of the present invention operates bycomparing a pair of wireless network (e.g., Wi-Fi) client devices, (orsimply clients). Each network device scans internally for a list of“visible” access points, and obtains the signal strengths from each ofthose access points. For example, in FIG. 2, the mobile device 204 ₁scans for and obtains the signal strengths for three access points,namely the base station 202 ₁, the base station 202 ₂ and the basestation 202 ₃. Each of the devices then transmits this data to a centralserver 206 (or set of servers) which compares the signal strengths andreturns an inference on whether or not any two devices are in proximity.When there are more than two clients, the server compares each possiblepair of clients to produce a proximity inference for each pair. Afterthe server has made proximity inferences, it transmits a list ofproximal clients to each client. Alternatively, the central server canprovide signal strength data to the clients, which can then performtheir own proximity calculations. As can be readily appreciated, otheralternatives, such as a peer-to-peer model which needs no base stationsand no server by considering peers with the strongest signals to be theclosest, are also capable of enabling proximity detection in accordancewith the present invention.

To determine the signal strengths, the clients (e.g., 204 ₁-204 ₄) eachassemble an array of MAC addresses, one unique address for each accesspoint seen. Each client also assembles a corresponding array of signalstrengths from each of the visible access points. In the client-servermodel, these arrays are transmitted by each of the clients to the server206. For any two clients, the server 206 may compare the arrays, toextract which access points the two clients can see in common, asdescribed below. The list of access points seen in common is often asubset of each client's visible list, because often the two clientscannot see the exact same set of access points. The server 206 may thenconstruct a numerical proximity score based on the signal strengths ofthe access points that both clients can see. For example, this score maybe the sum of squared differences of the corresponding signal strengthpairs divided by the number of access points seen in common. In otherwords, it is the average squared signal strength difference over thelist of common access points. If this score is below a threshold, theclients are inferred to be in proximity, otherwise they are inferred tobe apart. As described below, various other mathematical techniques fordetermining proximity may be alternatively employed.

To help smooth dropouts and extremes in the signal strength values,rather than use raw values, the server may instead compare median valuesof signal strengths taken over time. Note that signal strength samplesfrom access points may vary considerably even when the client locationis constant. Averaging the samples over time or employing medianfiltering helps obtain a reliable figure for the signal strength. In oneimplementation, the client can perform this function, and reportsmoothed values to the server, however the server can also perform itsown smoothing operations.

One threshold that the server may use is a function of the number ofaccess points seen in common. In general, the threshold is higher formore access points. This enforces the intuitive notion that when only afew access points are seen in common, the average difference in signalstrengths should be small in order to declare proximity. If many accesspoints are seen in common, then the clients are likely in proximity evenif the average signal strength difference is larger. This worksparticularly well in environments with low-power access points, such asgenerally represented in the network 300 of FIG. 3, (in which generallysimilar components have like numbers relative to those of FIG. 2) inwhich a wireless network device needs to be fairly close to a basestation in order to receive its signals. In one actual embodiment,low-power base stations were deployed to reduce the range, and theproximity detection was very accurate simply based on which basestations devices saw in common. As shown in the simplified example ofFIG. 3, only mobile device-A and mobile device-B have more than one basestation in common; whether the other devices are considered proximatedepends on thresholds set for that particular environment and/or othercriteria such as how strong is a signal to a common base station.

Note that in practice, the thresholds have been successfully derivedfrom training data. In general, the training participants walk around aroom or other appropriate area while running a program that recordssignal strengths from visible access points. As part of training, theparticipants also indicate which other participants they are close to inactuality. In an offline process, this data is analyzed to find thethresholds that tend to maximize the number of correct proximityinferences as a function of the thresholds. These are the thresholdsthat are used for making subsequent inferences on the server. Of course,different environments may have different training results and thusdifferent thresholds.

To detect signal strengths, passive or active scanning may be employed.Passive scanning involves the client tuning to a channel and listeningfor a period of time for valid 802.11 packets received from the basestations (access points) on that channel. The packets received areusually Beacons from the base stations at 100 msecond intervals, butthis period cannot be guaranteed. Active scanning involves the clienttuning to a channel and sending a Probe request with an SSID equal tothe broadcast SSID or SSID equal to a valid SSID. A base station thatreceives a Probe Request with an SSID equal to the broadcast SSID orSSID equal to its own SSID will respond to the client with a ProbeResponse.

A proximity client may scan (actively or passively) all 802.11 channelsto determine the RSSI of base stations on those channels. Alternatively,a proximity client may scan (actively or passively) a subset of channelsfor a specified minimum and maximum durations to optimize performanceand reduce the adverse impact to the client. Note that these two methodsmay be used in conjunction to improve performance. For example,all-channel scanning may be performed on a regular basis for roamingpurposes (e.g., Windows® XP and Windows® Zero Config operates in thismanner). Then, the results can be used to determine the active subset ofchannels for subset scanning, with the frequency of subset scanningbeing greater than the frequency of all-channel scanning.

In one example, the number of channels scanned by the client was reducedto only the channels of interest. This was done to improve theperformance of the overall system and the proximity client which wasactively associated to a valid network.

Thus, in sum, in accordance with an aspect of the present invention,wireless signal strengths are gathered from each of the participatingmobile devices 204 _(A)-204 _(D), and then compared (e.g., in pairs) tofind which devices see similar signal strengths. Those with similarsignal strengths are declared to be in proximity.

As described above, in one implementation, the system and methodincludes a central proximity server (or set of communicating servers)206 used to collect signal strength data and to distribute signalstrength and/or proximity data to the mobile clients 204 _(A)-204 _(D).In this model, at least some of the mobile proximity clients thatparticipate in proximity detection send signal strength data to thecentral server 206, and query the server 206 for signal strength and/orproximity data. A database 208 is also shown, so that, for example,information beyond simply device identifier, strengths and/or lists maybe provided to clients, such as biographical data (e.g., images andtext) for a user of each device; furthermore this database could allowperformance of additional queries such as common or differing profileelements.

Other variations are feasible, including using proximity detection as an“alert” for the user, e.g., a user who is walking thru a city and wantsto know when he or she gets near a certain type of store or restaurant,and the user's device can provide such a notification. Also, the presentinvention can provide an alert when someone who shares one or more of auser's interests or has a service/good that is being sought is nearby,(e.g., in a conference, commerce, or social setting).

The proximity server 206 comprises a central computer used to storesignal strength data contributed by participating mobile proximityclients, e.g., the clients 240 _(A)-204 _(D) in FIG. 2. The serverstores each signal strength report as it comes in, such as in a cacheand/or non-volatile storage. As described below, each report comprises aset of ordered pairs, with each ordered pair giving a base stationidentifier b_(j) and the measured signal strength s_(j) measured fromthat base station on the client. Mathematically, the proximity serverreceives reports of the type:

-   -   [(b₁, s₁), (b₂,s₂), . . . , (b_(m),s_(m))]

In this example, the mobile device reports that it can see m differentbase stations, and reports the base station identifier along with themeasured signal strength of each base station as a set of pairs. Theproximity server appends a client identifier c_(i) indicating theidentity of the reporting mobile device and a time stamp t_(i)indicating when the report was received to this data.

The proximity server can optionally maintain a list of registered usersof the service. Each user is given a client identifier c_(i) (used asdescribed above), a name string to make the list of proximal userseasier to interpret, and optionally an expiration time after which theuser is automatically deleted from the list of registered users and willnot appear on any more lists of nearby resources/people. This helpsensure privacy after users are finished with the system.

Proximity clients query data from the proximity server, althoughalternatively the server may use a broadcast or other push model toprovide the data, e.g., on some regular basis. If a client deviceperforms its own proximity computations, then that device need requestonly the signal strength reports from the server 206, usually going backin time by some limited amount specified by the client. This “look back”time acts as a filter on the data so that only recent signal strengthdata will be considered, and also to reduce the amount of data thatneeds to be transmitted through the network 200. Note that older datamay have come from locations that other clients have already left.

Alternatively, if the clients do not perform their own proximitycomputations, they may request that the server 206 send back a list ofother nearby clients. In essence, the server performs the computationfor such clients. The computation is explained below. Note that it ispossible to have a mixed-type system in which some clients perform theirown computations while other clients receive the computed list of othernearby clients from the server. For example, more sophisticated devicescan perform the computations to relieve some of the load on the server,while the server can perform the computations for less-capable devices.

In accordance with an aspect of the present invention, proximity clients(at least those that wish to be located by others) are responsible forsending signal strength reports to the proximity server 206. Proximityclients can also optionally register with the server, such as to supplya name string and an expiration time. As described above, if the clientdoes its own proximity computations, then it queries the server forsignal strength reports, usually going back in time a limited amount,and can further report its results to the server 206. For example, theclient can provide the server with a list a list of nearby users. Thisdata can also be used by the server to deduce or further processproximity information, e.g., if client A is reporting that clients B andclient C are both nearby, then the server knows that client B is atleast somewhat close to client C. As can be appreciated, the larger thelists, the more the server can deduce.

A client can be set up to report signal strengths and give lists ofnearby users on demand. Alternatively, the client can be set up toperform either function periodically. The periodic mode is useful ifusers are frequently moving from place to place, when their signalstrengths and proximity relations will also change frequently. Theon-demand mode is typically more useful for getting a one-time list ofnearby users, such as at the beginning of a meeting. Modes may beswitched manually by the user, but may also be set to switchautomatically. For example, if a device detects its signal strengthschanging, the device can automatically switch to the periodic mode,while if the device detects relatively static signal strengths, thedevice can switch to the on-demand mode. Note that instead ofimmediately switching to the on-demand mode when signal strengths aresufficiently static, the reporting period can be gradually increaseduntil the device essentially achieves the on-demand mode.

In accordance with an aspect of the present invention, proximity is thusdetermined by comparing signal strength reports between pairs ofproximity clients. In general, the greater the similarity in reports,the more likely two clients are nearby.

Various numerical features for determining proximity may be employed, asdescribed below. Note that for each of these features, the signalstrength reports from a given client are normally smoothed in some wayprior to the feature computation. For example, smoothing may beaccomplished by taking a client's signal strength data back in time somepre-specified amount, from a few seconds to a few minutes. The look backtime should be shorter if the client is likely moving around frequently,to avoid smoothing reports from different locations. Given the set ofrecent reports, the smoothed report has one (base station identifier,signal strength) pair for each base station seen in the set. The signalstrength associated with each base station is taken as the mean ormedian of the signal strengths measured from that base station in theset.

A straightforward indication of proximity is the number of base stationsthat two clients see in common. The more base stations in commonindicate a greater likelihood of proximity. By way of example, in FIG.2, the mobile device A can see only one base station (base station₃) incommon with the mobile device B, mobile device C, and mobile device D,and thus in such a model is not likely in proximity with those otherclients. In contrast, the mobile device B, mobile device C, and mobiledevice D each commonly see the same three base stations (base station₃,base station₄ and base station₅) and thus are more likely to beproximate one another. In general, for clients k and l, the number ofbase stations that both can see may be referred to as n_(k,l).

If two clients are at the same location, their signal strengths areexpected to be similar. The aggregate difference in signal strengths canbe quantified using a sum of squared differences. To this end, the listof access points that two clients have in common is found, and used toform two new signal strength reports with only these base stations:

-   -   Client k: └(b₁,s₁ ^((k))), (b₂,s₂ ^((k))), . . . , (b_(n) _(k,j)        ,s_(n) _(k,j) ^((k)))┘    -   Client l: └(b₁,s₁ ^((l))), (b₂,s₂ ^((l))), . . . , (b_(n) _(k,j)        ,s_(n) _(k,j) ^((l)))┘

Each report has n_(k,l) ordered pairs in it, because this is how manybase stations the two clients see in common. The signal strengthdifference feature is:

$d_{k,l} = {\sum\limits_{i = 1}^{n_{k,l}}\;\lbrack ( {s_{i}^{(k)} - s_{i}^{(l)}} )^{2} \rbrack}$

In words, for the base stations seen in common, the squared differencesof the two clients' signal strengths are summed to make d_(k,l). A largevalue of d_(k,l) means the signal strengths are not similar andindicates the clients are likely not near each other.

Signal strength differences provide a good feature when the clientsmeasure RSSI the same way. However, this is normally not the case whenconsidering the different manufacturers and models of mobile clientdevices, and thus some normalization or similar techniques are useful.In one implementation, to handle such differences, a feature that ismore robust comprises a ranking of the base stations seen in common. Byway of example, suppose that the two clients can see four base stationsin common, i.e. n_(k,l)=4, and that the two signal strength reports are:

-   -   Client k: [(b₁,30), (b₂,20), (b₃,35), (b₄,22)]    -   Client l: [(b₁,32), (b₂,19), (b₃,20), (b₄,25)]

After sorting each report by signal strength, then the two reports willbe:

-   -   Client k: [(b₂,20), (b₄,22), (b₁,30), (b₃,35)]    -   Client l: [(b₂,19), (b₃,20), (b₄,25), (b₁,32)]

The “rank vector” of each client comprises the subscripts of the basestations taken in order of signal strength, i.e.

-   -   Client k: r_(k)=(2,4,1,3)    -   Client l: r₁=(2,3,4,1)

If the two rank vectors are identical, then the two clients ranked theircommon base stations identically, bolstering the likelihood that theclients are in proximity of each other. The difference between the tworank vectors can be computed in various standard ways, includingKendall's Tau and Spearman's Rho, both of which vary between −1 and 1,with greater values indicating more similar rank vectors. One embodimentchose Spearman's Rho, denoting it as ρ_(k,l.)

Given clients k and l and some or all of their proximity featuresn_(k,l), d_(k,l), and/or ρ_(k,l), a decision needs to be made as towhether the two are in proximity. Both a manual and automatic methodhave been successfully employed to make such a decision.

In the manual method, the client machine's user manually adjuststhresholds on the proximity features to values that give the list ofnearby users that seems correct. This gives the user the flexibility toshorten or lengthen the list depending on his or her own idea ofproximity. Alternatively, these thresholds could be manually preset onthe proximity server, which could make its own proximity inferences andreturn a list of nearby users in response to any client's query. Notethat a more sophisticated approach provides a table of thresholdsinstead of just one. For instance, there can be a different thresholdfor ρ_(k,l) for each value of n_(k,l), meaning that the rank similaritythreshold varies depending on how many access points are seen in common.

The automatic method is similar to the manual method except that thethresholds are determined automatically. In one instance of the presentinvention, the number of base stations in common (n_(k,l)) and thesignal strength differences (d_(k,l)) were used as features. Thesevalues were recorded in a training phase as multiple users walked aroundwith clients actively reporting signal strengths to the proximityserver. Each user manually augmented each report with a list of nearbyusers. This resulted in a list of signal strength reports along withground truth determinations of which pairs of reports were produced inproximity and which were not. Note that each report from a given clientwas paired with the reports from the other clients to expand the numberof pairings used for training. Each of these pairs was tagged as eithera proximity pair or a non-proximity pair, depending on the manuallyentered list of nearby users for that pair of reports. These pairs ofreports were grouped by how many base stations were seen in common. Fromthese groups, a normalized histogram was formed as estimates ofp(near|n,d) and p(far|n,d), where n represents the number of basestations seen in common and d represents the signal strength differenceas explained above. The two states near and far represent the pair beingin proximity or not, respectively. These two normalized histograms aretaken as estimates of the probability of being in proximity or not giventhe number of base stations seen in common and the signal strengthdifference, as illustrated in FIG. 3. This training phase results in apair of probability distributions, p(near|n,d) and p(far|n,d), for eachpossible n.

Automatic proximity inferences are made using the probabilitydistributions created in the training phase. Using a pair of (possiblysmoothed) reports from two clients k and l, the system computes n_(k,l)and d_(k,l) as explained above. Ifp(near|n_(k,l),d_(k,l))>p(far|n_(k,l),d_(k,l)) then the two clients aredeemed in proximity, otherwise they are deemed not in proximity. Thiscomputation can occur on either the client or the server.

People can only change their proximity relationships with limitedfrequency, e.g., at the limit, people can only move so fast. The systemand method of the present invention optionally imposes a hysteresis onits proximity inferences that helps to smooth over small transients inproximity inferences. To this end, if a pair of clients is deemed to bein proximity, then there needs to be at least q_(far) consecutiveinferences of non-proximity to declare them non-proximal. Conversely, ifthe system has deemed two clients to be non-proximal, then there needsto be at least q_(near) consecutive inferences of proximity to declarethose clients to be in proximity. The values of q_(far) and q_(near) maybe set experimentally, e.g., for one embodiment, the settings wereq_(far)=10 and q_(near)=5.

It should be noted that not only can the present invention discovernearby people, but can also work to discover nearby resources such asprinters. These devices would have to have a signal strength record sentinto the server 206. This could come from a Wi-Fi card built into thedevice itself, or from someone standing near the device with a Wi-Fiequipped laptop.

Moreover, the other devices that are discovered need not actually bemobile, but can, for example use simulated signal strengths. FIG. 4shows an alternative implementation in which there are one or morefixed, wired devices in a network 400 (two are shown, fixed device—x andfixed device—y, labeled 410 and 412 in FIG. 4, respectively) thatparticipate in proximity detection. In one alternative, eachparticipating fixed device may be given a set of signal strengthsrelative to each base station, and thereafter reports (e.g., one time,similar to the above-described on-demand mode) the strengths to theserver as if the fixed device was wireless. The server will then treatthe fixed device as if it was a mobile device, although the operationcan be somewhat different if desired, e.g., the server can report it asfixed. A mobile device positioned near the fixed resource may be used toobtain the readings, which may then be manually input or transferred tothe fixed device in some manner, or reported from the mobile device tothe server on behalf of the fixed resource. In this way, non-networkedand non-electronic resources such as stairs, bathrooms, elevators orvending machines may be set to participate, as represented in FIG. 4 bythe pre-calibrated fixed resources 420 and 422. Alternatively, the fixeddevice may obtain its own readings, such as by being configured with atleast some signal strength detection capabilities. Once configured inits fixed location, the signal strengths of the fixed device may be leftalone, or they may be updated, such as each time the fixed deviceconnects to a wireless device to perform some functionality.

By way of example, consider a user of a mobile device looking for aprinter, such as one of a number of printers made available to users andthus configured to participate in proximity detection. A mobile user canquery the server for the nearest printer, (or other resources, such as adisplay monitor). In the example of FIG. 3, based on signal strengthsthe user of mobile device A would be informed that fixed device X wasnearest at the present time, along with some information about fixeddevice X, such as the fact that it is a printer, a link to a devicedriver for that printer on the network, directions to the exact locationof the printer, and so forth. Such information may be loaded from adatabase as with any other participating user, or may be provided to themobile device A in some other way, such as from the server as part ofthe printer-location functionality.

Turning to an explanation of the operation of the present invention whenused in an example proximity program 212 (FIG. 2) running on the networkdevice (e.g., 204 ₁), when one network device is deemed to be proximateanother network device, information about the proximate device may bedisplayed via the program 212 to a user of the other device, andvice-versa. The database or the like, which may be the separate database208 accessible through the server, an internal database on the deviceitself (e.g., the database 212 on device 204 ₁), or some combinationthereof, can be used to relate the device (that is deemed proximate) todata about its owner, or other appropriate information. For example, aperson's name, biographical data an/or image may be available, and someor all of the data displayed.

FIG. 5 shows an example of a display 500 of one such program, in whichthe devices of a number of other users (five are shown) have been deemedproximate by the system and method of the present invention. The usersmay be ranked according to signal strength similarity, e.g., such thatthe user deemed likely closest is displayed leftmost and the leastlikely closest (but still deemed proximate) user is rightmost. In thisexample program, an image of the user of each proximate device appearsin a “NEAR ME” region 502, with each image accompanied by a name,company data and job title. For example, an attendee of a conference mayprovide this information at registration, and/or a computer user mayhave locally preserved this information from a previous encounter, inwhich case such data can be displayed by associating it with a proximatedevice. As can be readily appreciated, virtually any type of informationthat a database can provide may be alternatively displayed, andadditional information may be available, e.g., by clicking on the imageor the accompanying data of a proximate user, more detailed biographicalinformation may be made to appear on the screen.

FIG. 6 is a flow diagram generally representing operation of a clientdevice running such a program. Note that FIG. 6 is only intended torepresent example functionality of such a program, and does not takeinto consideration possible concepts such as separate threads forsending, receiving and/or scanning, event driven operations and soforth. Further, FIG. 6 is shown in a client-server model in which theclient queries the server for proximity data, although it is understoodthat the server can push the data and that clients rather than a servercan communicate such information to each other in a peer-to-peer model.

In FIG. 6, step 600 represents the client program testing whether itshould still be participating. If so, the program will report signalstrengths, query for other clients' data, scan for base station signalstrengths and so on as described above, otherwise the client programwill end via steps 616 and 618 to avoid sending extraneous informationon the network. Note that step 616 represents notifying the server ofthe end of client participation, which, for example would be helpful inan environment in which the client does not send time-out data to theserver in advance, or if the client decides to end participation earlierthan initially sent.

If still participating, step 600 branches to step 602 which representsthe client determining whether it is time to send signal strength datato the server. Note that as described above, this transmission time maybe a one-time, on-demand reporting, periodic reporting, reporting basedon client signal strengths to base stations changing beyond somethreshold (that would be indicative of movement), and other mechanisms,and/or any combination of such mechanisms. If time to send data, step602 branches to step 604 to send the signal strengths, preferablysmoothed (e.g., averaged) in some manner over time. Note that toaverage, scanning should be performed more frequently than reporting.

Step 606 tests whether it is time for the client to receive proximitydata. If so, step 606 branches to step 608 which represents the querymodel in which the client receives a response from the server, such as alist of other clients that are deemed by the server to be close, or aset of signal strengths from which the client can compute proximity.Note that the former is somewhat advantageous in that only a smallsubset of client data needs to be transmitted by the server to eachrequesting client, thereby conserving bandwidth, however the latter isalso somewhat advantageous in that clients rather than the serverperform the calculations, thereby distributing the processing among theclients and reducing the computations needed by the server. Step 610represents processing the data, whether computing the proximity based onstrength, or using the list of clients to update the display as needed.Note that if the client computes the proximity from the signalstrengths, ranks other clients as desired and so forth, then the clientwill need to later convert the data representing the proximate clientsto human-useable data, such as by issuing a query to a database todisplay an image and text to update the display.

Step 612 represents the client device scanning for signal strengths ofthe base stations. As mentioned above, this may be more frequent thanreporting, so that the current signal strengths may be averaged withprevious ones scanned but not yet reported, as represented at step 614.As also described above, the server can perform is own smoothingfunctions. For example, the client can be configured to scan for signalstrengths once per second, and report once every five seconds (thussmoothing the results of five scans), while the server may average overfour reports from a client (every twenty seconds). As can be readilyappreciated, these values are arbitrary and may be configured to fit anyenvironment as appropriate. Step 614 loops back to step 600 in thisexample to continue operating until time expires or the user otherwisestops participating.

As can be seen from the foregoing detailed description, there isprovided a method and system for detecting network devices or otherresources that are proximate other network devices. Signal strengths (orother sensed conditions) are used in order to take advantage of existinginfrastructure and hardware to provide network devices with theinformation needed to present meaningful proximity data to users ofthose devices.

While the invention is susceptible to various modifications andalternative constructions, certain illustrated embodiments thereof areshown in the drawings and have been described above in detail. It shouldbe understood, however, that there is no intention to limit theinvention to the specific forms disclosed, but on the contrary, theintention is to cover all modifications, alternative constructions, andequivalents falling within the spirit and

1. In a network environment, a method for detecting a proximity ofmultiple client stations and identifying proximate client stations to aone or more of the client station, the method comprising: obtainingsignal strength data of a first client station with respect to signalsreceived by the first client station from at least one stationary basestation wherein the first client station is mobile; obtaining signalstrength data of other client stations with respect to signals receivedby the other client stations from the at least one stationary basestation, the other client stations and the first client station beingremote to the at least one stationary base station and wherein at leastone of the other client stations is mobile; comparing the signalstrength data of the first client station with the signal strength dataof the other client stations; comparing the signal strength data of thefirst client station with simulated signal strength data of anon-networked, non-electronic, fixed resource; remote from the firstclient station and the other client stations, determining that the firstclient station is proximate one or more of the other client stations orthe non-networked, non-electronic, fixed resource based on the signalstrength data of the first client station, signal strength data of theother client stations to the at least one stationary base station, andsimulated signal strength data of the non-networked, non-electronic,fixed resource; and sending to the first client station anidentification of the one or more other client stations or of thenon-networked, non-electronic, fixed resource determined to be proximatethe first client station.
 2. The method of claim 1 wherein obtainingsignal strength data of the first client station comprises scanning atthe first client station for radio signals at radio frequencies.
 3. Themethod of claim 2 wherein scanning for radio signals comprises scanninga subset of channels.
 4. The method of claim 2 wherein scanning forradio signals comprises performing a passive scan.
 5. The method ofclaim 2 wherein scanning for radio signals comprises performing anactive scan.
 6. The method of claim 2 further comprising mathematicallysmoothing a plurality of signal strength data into a smoothed value. 7.The method of claim 1 wherein obtaining signal strength data of thefirst client station comprises receiving a report from the first clientstation at a server.
 8. The method of claim 7 wherein the report isreceived on a regular basis from the first client station.
 9. The methodof claim 7 wherein the report is received as determined by the firstclient station.
 10. The method of claim 1 wherein the other clientstations comprise a second client station, and wherein obtaining signalstrength data of the first client station comprises receiving a reportat the second client station from the first client station.
 11. Themethod of claim 10 wherein comparing the signal strength data comprisesevaluating a number of base stations in common between the first clientstation and the one or more other client stations.
 12. The method ofclaim 10 wherein the signal strength data of the first client stationcomprises a first set of signal strength values, each value associatedwith each base station of a plurality of base stations seen by the firstclient station, and wherein the signal strength data of other clientstations comprises a second set of signal strength values, each valuepaired with each base station of a plurality of base stations seen by asecond client station corresponding to the other client stations, andwherein comparing the signal strength data comprises evaluating signalstrength values for base stations seen in common by the first device andthe second client station.
 13. The method of claim 12 wherein evaluatingsignal strength values for base stations seen in common comprises,ordering base stations seen in common by signal strength values into afirst ordering for the first client station and a second ordering forthe second client station, and determining similarity between the firstordering and the second ordering.
 14. The method of claim 11 wherein aserver determines that the one or more other client stations areproximate the first client station, and further comprising, the serverreturning proximity-related data to the first client station thatcorresponds to the one or more other client stations determined to beproximate the first client station.
 15. The method of claim 14 furthercomprising, at the first client station, querying a database based onthe proximity-related data for additional information corresponding tothe one or more other client stations determined to be proximate thefirst client station.
 16. The method of claim 15 wherein the one or moreother client stations determined to be proximate the first clientstation comprises a second client station, and further comprising,receiving at the first client station additional information includingbiographical information corresponding to a user of the second clientstation.
 17. The method of claim 10 wherein identifying to the firstclient station the one or more other client stations determined to beproximate the first client station comprises transmitting a list of atleast one proximate client, including proximity-related datacorresponding to the client, to the first client station.
 18. The methodof claim 14 wherein the one or more other client stations comprises asecond client station, wherein a server receives signal strength datafrom the second client station, and wherein the server returningproximity-related data to the first client station that corresponds tothe second client station comprises transmitting the signal strengthdata of the second client station to the first client station.
 19. Themethod of claim 18 wherein determining that the first client station isproximate the second client station comprises processing the signalstrength data of the second client station at the first client station.20. The method of claim 1 wherein at least one of the one or more of theother client stations is fixed, and further comprising, providing asimulated signal strength for the fixed network resource.
 21. One ormore computer-readable media having stored thereon computer-executableinstructions for performing the method of claim 1, wherein at least aportion of the computer-readable media is storage,non-communication-type media.
 22. In a network environment, a system forobtaining at a client device information corresponding to other clientdevices located near the client device, the system comprising: a clientdevice having an output mechanism for providing information to a user ofthe client device wherein the client device is mobile, the client devicefurther having a client program that detects signal strengths based onsignals received by the client device from one or more base stations,the client program further being configured to: report the detectedsignal strengths to a second network entity; receive proximity-relateddata corresponding to the one or more separate client stations and oneor more non-networked, non-electronic fixed resources from the secondnetwork entity, wherein at least one of the one or more separate clientstations is mobile, wherein the proximity-related data relates to whichof the one or more separate client stations and one or more fixedresources are proximate the client device as determined by the secondnetwork entity, wherein proximity of the one or more separate clientstations is based on signal strengths of the one or more separate clientstations detected based on signals received by the one or more separateclient stations from the one or more base stations and proximity of theone or more fixed resources is based on simulated signal strengths ofthe one or more fixed resources, and wherein the client device and theone or more separate client stations are remote to the second networkentity and the one or more base stations; and present to the user of theclient device information that corresponds to the proximity-related dataof the one or more separate client stations and the one or more fixedresources on the output mechanism of the client device, based onproximity of the client device to the one or more separate clientstations to the one or more base stations and proximity of the one ormore fixed resources to the one or more base stations.
 23. The system ofclaim 22 wherein the second network entity comprises a server.
 24. Thesystem of claim 22 wherein the second network entity comprises adifferent client device in the network.
 25. The system of claim 22wherein the proximity-related data comprises a list of other clientstations that are proximate the client device.
 26. The system of claim22 wherein the client device is a first mobile client device and whereinthe one or more separate client stations comprises at least one othermobile client device.
 27. The system of claim 26 wherein the clientprogram of the first client device processes the signal strengths of theone or more separate client stations to determine which other clientstations are proximate the client device.
 28. The system of claim 26wherein the client program receives the proximity-related data from aserver.
 29. The method of claim 22 wherein the output mechanismcomprises a display.
 30. The system of claim 22 further comprising adatabase, wherein the client program accesses the database to presentthe information that corresponds to the proximity-related data on theoutput mechanism of the client device.
 31. The system of claim 30wherein the one or more separate client stations comprises anotherclient device, and wherein the database returns biographical datacorresponding to a user of the another client device for display on theclient device.
 32. The system of claim 22 wherein the one or moreseparate client stations comprises a plurality of stations and whereinone of the plurality of stations comprises a printer.
 33. The system ofclaim 22 wherein the network comprises a wireless 802.11 network. 34.The method of claim 1 wherein the one or more non-networked,non-electronic fixed resources includes a fixed resource not havingwireless capabilities, and wherein the signal strength data of the fixedresource not having wireless capabilities and determined to be proximatethe first client station is a simulated wireless signal strength basedon an actual wireless device and reported on behalf of the fixedresource.
 35. In a wireless network having one or more base stationsproviding a wireless signal to a plurality of mobile client devices, amethod for notifying users of one or more mobile client devices of theproximity of other users of mobile client devices, the methodcomprising: obtaining signal strength data of a first mobile clientdevice with respect to signals received by the first mobile clientdevice from at least one stationary base station; obtaining signalstrength data of a second mobile client device with respect to signalsreceived by the second mobile client device from the at least onestationary base station; obtaining simulated signal strength data of anon-networked, non-electronic fixed resource participating in proximitydetection relative to the first mobile client, wherein the simulatedsignal strength is an equivalent signal strength were the fixed resourcea mobile client device, and is reported by a mobile device positionednear the fixed resource and on behalf of the fixed resource; at the oneor more base stations and remote from the plurality of mobile clientdevices: comparing the signal strength data of the first mobile clientdevice with the signal strength data of the second mobile client deviceand the simulated signal strength of the fixed resource; determiningthat the first mobile client device is located at a geographic locationthat is proximate a geographic location of at least one of the secondmobile client device or the fixed resource; and sending to the firstmobile client device a notice that the first mobile client device islocated near the at least one of the second mobile client device or thefixed resource, wherein when the notice is that the first mobile clientdevice is located near the second mobile client device, the notice tothe first mobile client device includes at least an identity of the userof the second mobile client device.
 36. The method of claim 35, whereinwhen the notice is that the first mobile client device is located nearthe fixed resource, the notice to the first mobile device includes atleast an identification of a type of resource that is the fixedresource.